package com.ds.bintree.NewCoder;

/**
 * @author Dianzhi Han
 * @version 1.0
 * @description: 每次进入右子树递归前都把前驱结点设置成当前递归的结点，进入到下一层递归的时候pre就是前驱
 * @date 2022/9/15 0:25
 */
public class JZ36_BST2LinkedList2 {
    TreeNode pre= null; //必须是全局变量
    TreeNode root=null;
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree ==null) return null;
        Convert(pRootOfTree.left);
        if(root == null){
            root=pRootOfTree;
        }
        if(pre!=null){
            pRootOfTree.left=pre;
            pre.right=pRootOfTree;
        }
        pre=pRootOfTree;  // 中序遍历到这个结点的时候设置当前结点为下一个结点的前驱结点
        Convert(pRootOfTree.right);
        return root;
    }
}
